USE SERVICIOS
GO
--SP_HELPTEXT [SER_S_Reserva_Asistencia_Listado]	
--SP_HELPTEXT [SER_S_Reserva_Asistencia]
--SP_HELPTEXT [SER_I_Asistencia]
--SP_HELPTEXT [SER_S_Asistencia_Reporte]
GO
IF OBJECT_ID(N'dbo.[SER_S_Reserva_Asistencia_Listado]',N'P') IS NOT NULL
   DROP PROCEDURE [SER_S_Reserva_Asistencia_Listado];
GO
IF OBJECT_ID(N'dbo.[SER_S_Reserva_Asistencia]',N'P') IS NOT NULL
   DROP PROCEDURE [SER_S_Reserva_Asistencia];
GO
IF OBJECT_ID(N'dbo.[SER_I_Asistencia]',N'P') IS NOT NULL
   DROP PROCEDURE [SER_I_Asistencia];
GO
IF OBJECT_ID(N'dbo.[SER_S_Asistencia_Reporte]',N'P') IS NOT NULL
   DROP PROCEDURE [SER_S_Asistencia_Reporte];
GO
/**********************************************************
CONCESIONARIOS
	Creado por : RGD
	Modificado por : NA
	Fechas		: 22/02/2011 - SP Inicial
	Objetivo   	: Listado de reservas pendientes de asistencia 
				  --RESERVAS - ASISTENCIAS > 0
***********************************************************/
CREATE PROCEDURE [SER_S_Reserva_Asistencia_Listado]
	@CO_SERVICIO INT,
	@CO_NATURAL INT,
	@FL_SEXO CHAR(1)
AS 
BEGIN
SET NOCOUNT ON
	SELECT	DPP.CO_PLAN,
			DPP.CO_SERVICIO,
			DPP.CO_ITEM,
			DPP.CO_NATURAL,
			SER.TX_DESCRIPCION AS SERVICIO,
			NAT.NO_DOCIDENTIDAD AS DNI,
			NAT.FL_SEXO AS SEXO,
			PER.NO_NOMBRE1 + ' ' + PER.NO_NOMBRE2 AS PERSONAL,
			DPP.TX_DESCRIPCION,
			CONVERT(VARCHAR(10),DPP.FE_INICIO,103) AS FE_INICIO,
			CONVERT(VARCHAR(10),DPP.FE_HORAINICIO,108) AS FE_HORAINICIO,
			CONVERT(VARCHAR(10),DPP.FE_FIN,103) AS FE_FIN,
			CONVERT(VARCHAR(10),DPP.FE_HORAFIN,108) AS FE_HORAFIN,
			DPP.NU_CAPACIDAD AS VACANTES,
			(SELECT COUNT(*) FROM T_SER_ESI_DetallePlanServicioReserva DPR WITH(NOLOCK)
			 INNER JOIN T_SER_ESI_ReservaServicio RES WITH(NOLOCK) ON DPR.Co_Reserva=RES.Co_Reserva
			 WHERE	DPP.CO_PLAN = DPR.CO_PLAN AND 
					DPP.Co_Servicio  = DPR.Co_Servicio AND
					DPP.Co_Item = DPR.Co_Item AND
					DPP.Co_Natural = DPR.Co_Natural) AS RESERVAS,
			(SELECT COUNT(*) 
			FROM T_SER_ESI_DetallePlanServicioReserva DPR WITH(NOLOCK)
			INNER JOIN T_SER_ESI_ReservaServicio RES WITH(NOLOCK) ON DPR.Co_Reserva=RES.Co_Reserva
			INNER JOIN T_SER_ESI_Asistencia ASI WITH(NOLOCK) ON RES.Co_Reserva=ASI.Co_Reserva
			WHERE	DPP.CO_PLAN = DPR.CO_PLAN AND 
					DPP.Co_Servicio  = DPR.Co_Servicio AND
					DPP.Co_Item = DPR.Co_Item AND
					DPP.Co_Natural = DPR.Co_Natural) AS ASISTENCIAS
	FROM T_SER_ESI_DetallePlanServicioPersonal DPP WITH(NOLOCK)
	INNER JOIN T_SER_ESI_Servicio SER WITH(NOLOCK) ON DPP.CO_SERVICIO = SER.CO_SERVICIO
	INNER JOIN T_Natural NAT WITH(NOLOCK) ON DPP.CO_NATURAL = NAT.CO_NATURAL
	INNER JOIN T_Persona PER WITH(NOLOCK) ON NAT.CO_PERSONA = PER.CO_PERSONA
	WHERE	DPP.CO_SERVICIO = CASE WHEN @CO_SERVICIO=0 THEN DPP.CO_SERVICIO ELSE @CO_SERVICIO END AND
			DPP.CO_NATURAL = CASE WHEN @CO_NATURAL=0 THEN DPP.CO_NATURAL ELSE @CO_NATURAL END AND
			NAT.FL_SEXO = CASE WHEN LEN(LTRIM(RTRIM(@FL_SEXO))) = 0 THEN NAT.FL_SEXO  ELSE @FL_SEXO END AND
			SER.FL_RESERVABLE = 1 AND
			--RESERVAS > 0
			(SELECT COUNT(*) FROM T_SER_ESI_DetallePlanServicioReserva DPR WITH(NOLOCK)
			 INNER JOIN T_SER_ESI_ReservaServicio RES WITH(NOLOCK) ON DPR.Co_Reserva=RES.Co_Reserva
			 WHERE	DPP.CO_PLAN = DPR.CO_PLAN AND 
					DPP.Co_Servicio  = DPR.Co_Servicio AND
					DPP.Co_Item = DPR.Co_Item AND
					DPP.Co_Natural = DPR.Co_Natural) > 0 AND
			--RESERVAS - ASISTENCIAS > 0
			(SELECT COUNT(*) FROM T_SER_ESI_DetallePlanServicioReserva DPR WITH(NOLOCK)
			 INNER JOIN T_SER_ESI_ReservaServicio RES WITH(NOLOCK) ON DPR.Co_Reserva=RES.Co_Reserva
			 WHERE	DPP.CO_PLAN = DPR.CO_PLAN AND 
					DPP.Co_Servicio  = DPR.Co_Servicio AND
					DPP.Co_Item = DPR.Co_Item AND
					DPP.Co_Natural = DPR.Co_Natural) -
			(SELECT COUNT(*) 
			 FROM T_SER_ESI_DetallePlanServicioReserva DPR WITH(NOLOCK)
			 INNER JOIN T_SER_ESI_ReservaServicio RES WITH(NOLOCK) ON DPR.Co_Reserva=RES.Co_Reserva
			 INNER JOIN T_SER_ESI_Asistencia ASI WITH(NOLOCK) ON RES.Co_Reserva=ASI.Co_Reserva
			 WHERE	DPP.CO_PLAN = DPR.CO_PLAN AND 
					DPP.Co_Servicio  = DPR.Co_Servicio AND
					DPP.Co_Item = DPR.Co_Item AND
					DPP.Co_Natural = DPR.Co_Natural) > 0
SET NOCOUNT OFF
END
GO
/**********************************************************
CONCESIONARIOS
	Creado por : RGD
	Modificado por : NA
	Fechas		: 22/02/2011 - SP Inicial
	Objetivo   	: Listado de reservas pendientes de asistencia x detalle plan
***********************************************************/
CREATE PROCEDURE [SER_S_Reserva_Asistencia]
	@Co_Plan INT,
	@Co_Servicio INT,
	@Co_Item INT,
	@Co_Natural INT
AS 
BEGIN
SET NOCOUNT ON
	SELECT	RES.CO_RESERVA AS CODIGO,
			NAT.NO_DOCIDENTIDAD AS DNI,
			PER.NO_NOMBRE1 + ' ' + PER.NO_NOMBRE2 AS SOCIO,
			CONVERT(VARCHAR(10),RES.FE_RESERVA ,103) AS [FECHA RESERVA]
	FROM T_SER_ESI_DetallePlanServicioReserva DPR WITH(NOLOCK)
	INNER JOIN T_SER_ESI_ReservaServicio RES WITH(NOLOCK) ON DPR.Co_Reserva=RES.Co_Reserva
	INNER JOIN T_Natural NAT WITH(NOLOCK) ON RES.CO_NATURAL = NAT.CO_NATURAL
	INNER JOIN T_Persona PER WITH(NOLOCK) ON NAT.CO_PERSONA = PER.CO_PERSONA
	LEFT OUTER JOIN T_SER_ESI_Asistencia ASI WITH(NOLOCK) ON RES.Co_Reserva=ASI.Co_Reserva
	WHERE	--RES.Fe_HoraInicio <= GETDATE() AND
			DPR.Co_Plan = @Co_Plan AND 
			DPR.Co_Servicio  = @Co_Servicio AND
			DPR.Co_Item = @Co_Item AND
			DPR.Co_Natural = @Co_Natural AND
			ASI.CO_ASISTENCIA IS NULL
SET NOCOUNT OFF
END
GO
/**********************************************************
CONCESIONARIOS
	Creado por : RGD
	Modificado por : NA
	Fechas		: 23/02/2011 - SP Inicial
	Objetivo   	: Inserta asistencia
***********************************************************/
CREATE PROCEDURE [SER_I_Asistencia]
	@Co_Reserva INT ,
	@Fe_Asistencia DATETIME,
	@Fe_HoraAsistencia DATETIME,
	@Fl_Asistencia BIT
AS 
BEGIN
SET NOCOUNT ON

	UPDATE [T_SER_ESI_ReservaServicio] SET No_Estado = 'UT' WHERE [Co_Reserva] = @Co_Reserva

	INSERT INTO [T_SER_ESI_Asistencia]
	([Co_Reserva], [Fe_Asistencia], [Fe_HoraAsistencia], [Fl_Asistencia], [No_Estado])
	VALUES
	(@Co_Reserva, @Fe_Asistencia, @Fe_HoraAsistencia, @Fl_Asistencia, 'PE' )

	SELECT @@IDENTITY AS CO_ASISTENCIA

SET NOCOUNT OFF
END
GO
/**********************************************************
CONCESIONARIOS
	Creado por : RGD
	Modificado por : NA
	Fechas		: 25/02/2011 - SP Inicial
	Objetivo   	: Listado de asistencia para reporte
***********************************************************/
CREATE PROCEDURE [SER_S_Asistencia_Reporte]
	@NO_DOCIDENTIDAD VARCHAR(8),	
	@CO_SERVICIO INT ,
	@FE_INICIO DATETIME,
	@FE_FIN DATETIME  
AS 
BEGIN
SET NOCOUNT ON

	SELECT	RES.CO_RESERVA AS CODIGO,
			UPPER(SER.TX_DESCRIPCION) AS SERVICIO,
			NATPER.NO_DOCIDENTIDAD AS DNI_PERSONAL,
			PERPER.NO_NOMBRE1 + ' ' + PERPER.NO_NOMBRE2 AS PERSONAL,
			NATSOC.NO_DOCIDENTIDAD AS DNI_SOCIO,
			PERSOC.NO_NOMBRE1 + ' ' + PERSOC.NO_NOMBRE2 AS SOCIO,
			CONVERT(VARCHAR(10),RES.FE_RESERVA,103) AS FE_RESERVA,
			CONVERT(VARCHAR(10),ASI.FE_ASISTENCIA,103) AS FE_ASISTENCIA,
			ASI.FL_ASISTENCIA
	FROM T_SER_ESI_ReservaServicio RES WITH(NOLOCK)
	INNER JOIN T_SER_ESI_DetallePlanServicioReserva DPS WITH(NOLOCK) ON RES.CO_RESERVA = DPS.CO_RESERVA
	INNER JOIN T_SER_ESI_Servicio SER WITH(NOLOCK) ON DPS.CO_SERVICIO=SER.CO_SERVICIO
	INNER JOIN T_Natural NATPER WITH(NOLOCK) ON DPS.CO_NATURAL=NATPER.CO_NATURAL
	INNER JOIN T_Persona PERPER WITH(NOLOCK) ON NATPER.CO_PERSONA=PERPER.CO_PERSONA
	INNER JOIN T_Natural NATSOC WITH(NOLOCK) ON RES.CO_NATURAL=NATSOC.CO_NATURAL
	INNER JOIN T_Persona PERSOC WITH(NOLOCK) ON NATSOC.CO_PERSONA=PERSOC.CO_PERSONA
	INNER JOIN T_SER_ESI_Asistencia ASI WITH(NOLOCK) ON RES.CO_RESERVA = ASI.CO_RESERVA
	WHERE	SER.CO_SERVICIO = CASE WHEN @CO_SERVICIO = 0 THEN SER.CO_SERVICIO ELSE @CO_SERVICIO END AND
			NATSOC.NO_DOCIDENTIDAD LIKE CASE WHEN LEN(LTRIM(RTRIM(@NO_DOCIDENTIDAD)))=0 THEN NATSOC.NO_DOCIDENTIDAD ELSE @NO_DOCIDENTIDAD + '%' END AND
			ASI.FE_ASISTENCIA BETWEEN @FE_INICIO AND @FE_FIN

SET NOCOUNT OFF
END